package com.aaa.vegetablemarketexpress.controller;

import com.aaa.vegetablemarketexpress.util.CustomException;
import com.aaa.vegetablemarketexpress.util.Result;
import com.aaa.vegetablemarketexpress.util.ResultUtil;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @FileName: GlobalExceptionHandler
 * @Description:    统一异常处理类
 * @Author: 张钰哲
 * @CreateTime: 2025/8/22 14:56
 * @Version: 1.0.0
 */
@RestControllerAdvice //所有使用@RestController注解的类，都会被这个类处理
                    // 当前类处理异常，也就说只要有异常 并且  使用@RestController都会走当前类的方法
public class GlobalExceptionHandler {
    /**
     * 统一异常处理方法
     * @param e
     * @return
     */
    @ExceptionHandler   //表明当前方法处理异常
    public Result handlerException1(Exception e){
        //一定要做一个异常堆栈打印---------------如果没有---------------后台不会有错误！
        e.printStackTrace();
        //判断异常是否是自定义异常
        if (e instanceof CustomException){
            //如果是，就可以强制转换
            CustomException e1 = (CustomException) e;
            //根据自定义异常，返回错误结果
            return new Result<>(e1.getErrorCode(),e1.getErrorMsg(),"自定义异常");
        }
        return ResultUtil.failed(e.getClass().getName());
    }
}
